<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Reference Section</title>
<link rel="stylesheet" href="../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
<link rel="up" href="boost_pfr.html" title="Chapter 28. Boost.PFR 2.0">
<link rel="prev" href="boost_pfr/acknowledgements.html" title="Acknowledgements">
<link rel="next" href="boost/pfr/tuple_element.html" title="Type definition tuple_element">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../boost.png"></td>
<td align="center"><a href="../../index.html">Home</a></td>
<td align="center"><a href="../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_pfr/acknowledgements.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/tuple_element.html"><img src="../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="reference_section"></a>Reference Section</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="reference_section.html#header.boost.pfr_hpp">Header &lt;boost/pfr.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.core_hpp">Header &lt;boost/pfr/core.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.functions_for_hpp">Header &lt;boost/pfr/functions_for.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.functors_hpp">Header &lt;boost/pfr/functors.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.io_hpp">Header &lt;boost/pfr/io.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.io_fields_hpp">Header &lt;boost/pfr/io_fields.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.ops_hpp">Header &lt;boost/pfr/ops.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.ops_fields_hpp">Header &lt;boost/pfr/ops_fields.hpp&gt;</a></span></dt>
<dt><span class="section"><a href="reference_section.html#header.boost.pfr.tuple_size_hpp">Header &lt;boost/pfr/tuple_size.hpp&gt;</a></span></dt>
</dl></div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr.hpp" target="_top">boost/pfr.hpp</a>&gt;</h3></div></div></div>
<p>Includes all the Boost.PFR headers </p>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.core_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/core.hpp" target="_top">boost/pfr/core.hpp</a>&gt;</h3></div></div></div>
<p>Contains all the basic tuple-like interfaces <a class="link" href="boost/pfr/get.html" title="Function get"> boost::pfr::get </a>, <a class="link" href="boost/pfr/tuple_size.html" title="Type definition tuple_size"> boost::pfr::tuple_size </a>, <a class="link" href="boost/pfr/tuple_element_t.html" title="Type definition tuple_element_t"> boost::pfr::tuple_element_t </a>, and others.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/tuple_element.html" title="Type definition tuple_element"><span class="identifier">tuple_element</span></a><span class="special">;</span>
    <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tuple_element</span><span class="special">&lt;</span> <span class="identifier">I</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">type</span> <a class="link" href="boost/pfr/tuple_element_t.html" title="Type definition tuple_element_t"><span class="identifier">tuple_element_t</span></a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> <a class="link" href="boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span> <span class="keyword">constexpr</span> 
      <a class="link" href="boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> 
          <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">auto</span> 
      <a class="link" href="boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> 
          <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span><span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> I<span class="special">,</span> <span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">auto</span> 
      <a class="link" href="boost/pfr/get.html" title="Function get"><span class="identifier">get</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">,</span> 
          <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_rvalue_reference</span><span class="special">&lt;</span> <span class="identifier">T</span> <span class="special">&amp;&amp;</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/structure_to_tuple.html" title="Function template structure_to_tuple"><span class="identifier">structure_to_tuple</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">constexpr</span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/structure_tie.html" title="Function structure_tie"><span class="identifier">structure_tie</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">auto</span> 
      <a class="link" href="boost/pfr/structure_tie.html" title="Function structure_tie"><span class="identifier">structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> 
                    <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">auto</span> 
      <a class="link" href="boost/pfr/structure_tie.html" title="Function structure_tie"><span class="identifier">structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> 
                    <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span><span class="special">!</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">is_assignable</span><span class="special">&lt;</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">T</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="keyword">nullptr</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">auto</span> 
      <a class="link" href="boost/pfr/structure_tie.html" title="Function structure_tie"><span class="identifier">structure_tie</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">,</span> 
                    <span class="identifier">std</span><span class="special">::</span><span class="identifier">enable_if_t</span><span class="special">&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">is_rvalue_reference</span><span class="special">&lt;</span> <span class="identifier">T</span> <span class="special">&amp;&amp;</span> <span class="special">&gt;</span><span class="special">::</span><span class="identifier">value</span> <span class="special">&gt;</span> <span class="special">*</span> <span class="special">=</span> <span class="number">0</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> F<span class="special">&gt;</span> <span class="keyword">void</span> <a class="link" href="boost/pfr/for_each_field.html" title="Function template for_each_field"><span class="identifier">for_each_field</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">,</span> <span class="identifier">F</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span><span class="special">...</span> Elements<span class="special">&gt;</span> 
      <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/tie_from_structure.html" title="Function template tie_from_structure"><span class="identifier">tie_from_structure</span></a><span class="special">(</span><span class="identifier">Elements</span> <span class="special">&amp;</span><span class="special">...</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.functions_for_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/functions_for.hpp" target="_top">boost/pfr/functions_for.hpp</a>&gt;</h3></div></div></div>
<p>Contains BOOST_PFR_FUNCTIONS_FOR macro that defined comparison and stream operators for T along with hash_value function. <span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">functions_for</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>

<span class="keyword">namespace</span> <span class="identifier">my_namespace</span> <span class="special">{</span>
    <span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
        <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
    <span class="special">}</span><span class="special">;</span>
    <span class="identifier">BOOST_PFR_FUNCTIONS_FOR</span><span class="special">(</span><span class="identifier">my_struct</span><span class="special">)</span>
<span class="special">}</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> : <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators' </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis">

<a class="link" href="BOOST_PFR_FUNCTIONS_FOR.html" title="Macro BOOST_PFR_FUNCTIONS_FOR">BOOST_PFR_FUNCTIONS_FOR</a>(T)</pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.functors_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/functors.hpp" target="_top">boost/pfr/functors.hpp</a>&gt;</h3></div></div></div>
<p>Contains functors that are close to the Standard Library ones. Each functor calls corresponding Boost.PFR function from boost/pfr/ops.hpp</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">functors</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">std</span><span class="special">::</span><span class="identifier">unordered_set</span><span class="special">&lt;</span>
    <span class="identifier">my_struct</span><span class="special">,</span>
    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">hash</span><span class="special">&lt;</span><span class="special">&gt;</span><span class="special">,</span>
    <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special">&lt;</span><span class="special">&gt;</span>
<span class="special">&gt;</span> <span class="identifier">my_set</span><span class="special">;</span>
</pre>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/equal_to.html" title="Struct template equal_to">equal_to</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/greater.html" title="Struct template greater">greater</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/greater_equal.html" title="Struct template greater_equal">greater_equal</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/hash.html" title="Struct template hash">hash</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/less.html" title="Struct template less">less</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/less_equal.html" title="Struct template less_equal">less_equal</a><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T <span class="special">=</span> <span class="keyword">void</span><span class="special">&gt;</span> <span class="keyword">struct</span> <a class="link" href="boost/pfr/not_equal.html" title="Struct template not_equal">not_equal</a><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.io_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/io.hpp" target="_top">boost/pfr/io.hpp</a>&gt;</h3></div></div></div>
<p>Contains IO stream manipulator <a class="link" href="boost/pfr/io.html" title="Function template io"> boost::pfr::io </a> for types. If type is streamable using its own operator or its conversion operator, then the types operator is used.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">io</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">io</span><span class="special">(</span><span class="identifier">s1</span><span class="special">)</span><span class="special">;</span>  <span class="comment">// Outputs: {0, 1, H, e, l, l, o, , , 0, 6, 7, 8, 9, 10, 11}</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> : <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators' </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/io.html" title="Function template io"><span class="identifier">io</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.io_fields_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/io_fields.hpp" target="_top">boost/pfr/io_fields.hpp</a>&gt;</h3></div></div></div>
<p>Contains IO manupulator <a class="link" href="boost/pfr/io_fields.html" title="Function template io_fields"> boost::pfr::io_fields </a> to read/write <a class="link" href="boost_pfr/limitations_and_configuration.html" title="Limitations and Configuration"> simple aggregate </a> <code class="computeroutput">value</code> field-by-field.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">my_struct</span> <span class="special">{</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
    <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>

<span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&lt;&lt;</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&amp;</span> <span class="identifier">os</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">my_struct</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
    <span class="keyword">return</span> <span class="identifier">os</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">io_fields</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span><span class="special">;</span>  <span class="comment">// Equivalent to: os &lt;&lt; "{ " &lt;&lt; x.i &lt;&lt; " ," &lt;&lt;  x.s &lt;&lt; " }"</span>
<span class="special">}</span>

<span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">&gt;&gt;</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream</span><span class="special">&amp;</span> <span class="identifier">is</span><span class="special">,</span> <span class="identifier">my_struct</span><span class="special">&amp;</span> <span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
    <span class="keyword">return</span> <span class="identifier">is</span> <span class="special">&gt;&gt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">io_fields</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span><span class="special">;</span>  <span class="comment">// Equivalent to: is &gt;&gt; "{ " &gt;&gt; x.i &gt;&gt; " ," &gt;&gt;  x.s &gt;&gt; " }"</span>
<span class="special">}</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> : <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators' </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="keyword">auto</span> <a class="link" href="boost/pfr/io_fields.html" title="Function template io_fields"><span class="identifier">io_fields</span></a><span class="special">(</span><span class="identifier">T</span> <span class="special">&amp;&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.ops_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/ops.hpp" target="_top">boost/pfr/ops.hpp</a>&gt;</h3></div></div></div>
<p>Contains comparison and hashing functions. If type is comparable using its own operator or its conversion operator, then the types operator is used. Otherwise the operation is done via corresponding function from boost/pfr/ops.hpp header.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">ops</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span> <span class="keyword">char</span> <span class="identifier">data</span><span class="special">[</span><span class="number">7</span><span class="special">]</span><span class="special">;</span> <span class="keyword">bool</span> <span class="identifier">bl</span><span class="special">;</span> <span class="keyword">int</span> <span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">,</span><span class="identifier">c</span><span class="special">,</span><span class="identifier">d</span><span class="special">,</span><span class="identifier">e</span><span class="special">,</span><span class="identifier">f</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="string">"Hello"</span><span class="special">,</span> <span class="keyword">false</span><span class="special">,</span> <span class="number">6</span><span class="special">,</span><span class="number">7</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">9</span><span class="special">,</span><span class="number">10</span><span class="special">,</span><span class="number">11111</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">lt</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> : <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators' </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/eq.html" title="Function eq"><span class="identifier">eq</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/eq.html" title="Function eq"><span class="identifier">eq</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/ne.html" title="Function ne"><span class="identifier">ne</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/ne.html" title="Function ne"><span class="identifier">ne</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/lt.html" title="Function lt"><span class="identifier">lt</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/lt.html" title="Function lt"><span class="identifier">lt</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/gt.html" title="Function gt"><span class="identifier">gt</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/gt.html" title="Function gt"><span class="identifier">gt</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/le.html" title="Function le"><span class="identifier">le</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/le.html" title="Function le"><span class="identifier">le</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/ge.html" title="Function ge"><span class="identifier">ge</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/ge.html" title="Function ge"><span class="identifier">ge</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/hash_value.html" title="Function hash_value"><span class="identifier">hash_value</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/hash_value.html" title="Function hash_value"><span class="identifier">hash_value</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.ops_fields_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/ops_fields.hpp" target="_top">boost/pfr/ops_fields.hpp</a>&gt;</h3></div></div></div>
<p>Contains field-by-fields comparison and hash functions.</p>
<p><span class="bold"><strong>Example:</strong></span> </p>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">pfr</span><span class="special">/</span><span class="identifier">ops_fields</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">comparable_struct</span> <span class="special">{</span>      <span class="comment">// No operators defined for that structure</span>
    <span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">short</span> <span class="identifier">s</span><span class="special">;</span>
<span class="special">}</span><span class="special">;</span>
<span class="comment">// ...</span>

<span class="identifier">comparable_struct</span> <span class="identifier">s1</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">1</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">comparable_struct</span> <span class="identifier">s2</span> <span class="special">{</span><span class="number">0</span><span class="special">,</span> <span class="number">2</span><span class="special">}</span><span class="special">;</span>
<span class="identifier">assert</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pfr</span><span class="special">::</span><span class="identifier">lt_fields</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span> <span class="identifier">s2</span><span class="special">)</span><span class="special">)</span><span class="special">;</span>
</pre>
<p><span class="bold"><strong>See</strong></span> <span class="bold"><strong>Also</strong></span> : <a class="link" href="boost_pfr/tutorial.html#boost_pfr.tutorial.three_ways_of_getting_operators" title="Three ways of getting operators"> 'Three ways of getting operators' </a> for other ways to define operators and more details.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">bool</span> <a class="link" href="boost/pfr/eq_fields.html" title="Function template eq_fields"><span class="identifier">eq_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">bool</span> <a class="link" href="boost/pfr/ne_fields.html" title="Function template ne_fields"><span class="identifier">ne_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">bool</span> <a class="link" href="boost/pfr/gt_fields.html" title="Function template gt_fields"><span class="identifier">gt_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">bool</span> <a class="link" href="boost/pfr/lt_fields.html" title="Function template lt_fields"><span class="identifier">lt_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">bool</span> <a class="link" href="boost/pfr/ge_fields.html" title="Function template ge_fields"><span class="identifier">ge_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">,</span> <span class="keyword">typename</span> U<span class="special">&gt;</span> 
      <span class="keyword">constexpr</span> <span class="keyword">bool</span> <a class="link" href="boost/pfr/le_fields.html" title="Function template le_fields"><span class="identifier">le_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">,</span> <span class="keyword">const</span> <span class="identifier">U</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
    <span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> T<span class="special">&gt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="boost/pfr/hash_fields.html" title="Function template hash_fields"><span class="identifier">hash_fields</span></a><span class="special">(</span><span class="keyword">const</span> <span class="identifier">T</span> <span class="special">&amp;</span><span class="special">)</span><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="header.boost.pfr.tuple_size_hpp"></a>Header &lt;<a href="https://www.boost.org/doc/libs/1_72_0/boost/pfr/tuple_size.hpp" target="_top">boost/pfr/tuple_size.hpp</a>&gt;</h3></div></div></div>
<p>Contains tuple-like interfaces to get fields count <a class="link" href="boost/pfr/tuple_size.html" title="Type definition tuple_size"> boost::pfr::tuple_size </a>, <a class="link" href="boost/pfr/tuple_size_v.html" title="Global tuple_size_v"> boost::pfr::tuple_size_v </a>.</p>
<p><span class="bold"><strong>Synopsis:</strong></span> </p>
<pre class="synopsis"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
  <span class="keyword">namespace</span> <span class="identifier">pfr</span> <span class="special">{</span>
    <span class="keyword">typedef</span> <span class="emphasis"><em><span class="identifier">unspecified</span></em></span> <a class="link" href="boost/pfr/tuple_size.html" title="Type definition tuple_size"><span class="identifier">tuple_size</span></a><span class="special">;</span>

    <span class="keyword">constexpr</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <a class="link" href="boost/pfr/tuple_size_v.html" title="Global tuple_size_v">tuple_size_v</a><span class="special">;</span>
  <span class="special">}</span>
<span class="special">}</span></pre>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2016-2021 Antony Polukhin<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_pfr/acknowledgements.html"><img src="../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="boost_pfr.html"><img src="../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="index.html"><img src="../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="boost/pfr/tuple_element.html"><img src="../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
